package com.yfp.operation.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * 优惠券
 * @TableName mar_coupon
 */
@TableName(value ="mar_coupon")
@Data
@Tag(name = "优惠券实体")
public class MarCoupon implements Serializable {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "主键")
    private Long id;

    /**
     * 优惠券名称
     */
    @Schema(description = "优惠券名称")
    private String couponName;

    /**
     * 优惠券描述
     */
    @Schema(description = "优惠券描述")
    private String remark;

    /**
     * 发放总数
     */
    @Schema(description = "发放总数")
    private Integer count;

    /**
     * 剩余数量
     */
    @Schema(description = "剩余数量")
    private Integer surplusCount;

    /**
     * 使用门槛 0 无使用门槛
     */
    @Schema(description = "使用门槛 0 无使用门槛")
    private BigDecimal threshold;

    /**
     * 优惠内容
     */
    @Schema(description = "优惠内容")
    private BigDecimal discounts;

    /**
     * 领取后有效天数 0 取有效时间段
     */
    @Schema(description = "领取后有效天数 0 取有效时间段")
    private Integer validDays;

    /**
     * 有效开始时间
     */
    @Schema(description = "有效开始时间")
    private Timestamp validStartTime;

    /**
     * 有效结束时间
     */
    @Schema(description = "有效结束时间")
    private Timestamp validEndTime;

    /**
     * 每人领取次数
     */
    @Schema(description = "每人领取次数")
    private Integer receiveCount;

    /**
     * 参与点位，0 表示全部点位，1多个点位
     */
    @Schema(description = "参与点位，0 表示全部点位，1多个点位")
    private Integer position;

    /**
     * 参数用户1全部用户2新用户
     */
    @Schema(description = "参数用户1全部用户2新用户")
    private Integer clientStatus;

    /**
     * 参与套餐：0表示全部套餐， 1多个套餐
     */
    @Schema(description = "参与套餐：0表示全部套餐， 1多个套餐")
    private Integer combo;

    /**
     * 使用规则
     */
    @Schema(description = "使用规则")
    private String rule;

    /**
     * 是否弹窗1是0否
     */
    @Schema(description = "是否弹窗1是0否")
    private Integer popup;

    /**
     * 弹窗背景图
     */
    @Schema(description = "弹窗背景图")
    private String popupUrl;

    /**
     * 领券中心1是0否
     */
    @Schema(description = "领券中心1是0否")
    private Integer couponCentre;

    /**
     * 券类型1满减券2折扣券3单品券4新人券5霸王免单券6实物券
     */
    @Schema(description = "券类型1满减券2折扣券3单品券4新人券5霸王免单券6实物券")
    private Integer type;

    /**
     * 状态1进行中0删除2失效3已过期
     */
    @Schema(description = "状态1进行中0删除2失效3已过期4待开始")
    private Integer status;

    /**
     * 创建用户
     */
    @Schema(description = "创建用户")
    private Long createUserId;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
     * 优惠方式1满减2折扣
     */
    @Schema(description = "优惠方式1满减2折扣")
    private Integer discountsType;

    /**
     * 到期延期天数
     */
    @Schema(description = "到期延期天数")
    private Integer postponeDay;

    /**
     * 编辑用户
     */
    @Schema(description = "编辑用户")
    private Long updateUserId;

    /**
     * 优惠详情
     */
    @Schema(description = "编辑用户")
    private String details;

    /**
     * 营销主表id
     */
    @Schema(description = "营销主表id")
    private Long marketingId;

    /**
     * 分享标题
     */
    @Schema(description = "分享标题")
    private String shareTitle;

    /**
     * 分享图片
     */
    @Schema(description = "分享图片")
    private String shareImg;

    /**
     * 活动背景图
     */
    @Schema(description = "活动背景图")
    private String backgroundImg;

    /**
     * 按钮名称
     */
    @Schema(description = "按钮名称")
    private String buttonName;

    /**
     * 活动规则
     */
    @Schema(description = "活动规则")
    private String activityRule;

    /**
     * 能否关联轮播图 1能  0不能
     */
    @Schema(description = "能否关联轮播图 1能  0不能")
    private Integer setting;

    @Schema(description = "运营城市名称")
    private String cityName;

    @Schema(description="部门ID（数据权限使用）")
    private Long deptId;

    @Schema(description="活动开始时间")
    private Timestamp activityStartTime;

    @Schema(description="活动结束时间")
    private Timestamp activityEndTime;

    @Schema(description="使用时间类型1全天0指定时间段")
    private Integer useType;

//    /**
//     * 1普通全部点位 2普通指定点位表 3特殊全部点位 4特殊指定点位
//     */
//    @Schema(description="1普通全部点位 2普通指定点位表 3特殊全部点位 4特殊指定点位")
//    private Integer label;

    @Schema(description="使用开始时间段")
    private Timestamp useStartTime;

    @Schema(description="使用结束时间段")
    private Timestamp useEndTime;
    /**
     * 编辑时间
     */
    @Schema(description = "编辑时间")
    private Date updateTime;

    @Schema(description = "活动到期延期天数")
    private Integer activityPostponeDay;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @TableField(exist = false)
    private List<String> comboIdList;

    @TableField(exist = false)
    private List<String> positionIdList;

}